package com.ray.auth.system.table.customMapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.ray.auth.system.table.entity.Role;
import com.ray.auth.system.table.entity.RoleExample;

public interface CustomRoleMapper {
	/**
	 * 
	 * @param linkId 关联ID
	 * @param linkType 关联类型
	 * @param isDelete 是否删除状态
	 * @return
	 */
	List<Role> selectRoleByLink(@Param("linkId") String linkId,@Param("linkType")String linkType,@Param("status") String status, @Param("isDelete")String isDelete);
	
	/**
	 * 获取在角色关联表中的数据
	 * @param linkId 关联ID
	 * @param linkType 关联类型
	 * @param isDelete 是否删除状态
	 * @return
	 */
	List<Role> selectHaveRole(@Param("linkId") String linkId,@Param("linkType")String linkType, @Param("isDelete")String isDelete,@Param("example") RoleExample example);
	
	/**
	 * 获取在角色关联表中的数据求和
	 * @param linkId 关联ID
	 * @param linkType 关联类型
	 * @param isDelete 是否删除状态
	 * @return
	 */
	Long countHaveRole(@Param("linkId") String linkId,@Param("linkType")String linkType, @Param("isDelete")String isDelete,@Param("example") RoleExample example);
	
	/**
	 * 获取不在角色关联表中的数据
	 * @param linkId 关联ID
	 * @param linkType 关联类型
	 * @param isDelete 是否删除状态
	 * @return
	 */
	List<Role> selectNotHaveRole(@Param("linkId") String linkId,@Param("linkType")String linkType, @Param("isDelete")String isDelete,@Param("example") RoleExample example);
	
	/**
	 * 获取不在在角色关联表中的数据求和
	 * @param linkId 关联ID
	 * @param linkType 关联类型
	 * @param isDelete 是否删除状态
	 * @return
	 */
	Long countNotHaveRole(@Param("linkId") String linkId,@Param("linkType")String linkType, @Param("isDelete")String isDelete,@Param("example") RoleExample example);
}